package com.evil.common.application.dto.order;

import com.evil.common.application.enums.order.OrderSearchTypeEnum;
import com.evil.common.core.enums.SwitchEnum;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 订单查询 请求实体
 *
 * @author liyang
 * @date 2022-08-08 00:00
 */
@Data
public class OrderQueryReqDTO {

    /**
     * 最大值
     */
    private String maxValue;

    /**
     * 最大值是否闭区间 (0-否，1-是 默认0)
     */
    private Integer maxType;

    /**
     * 最小值
     */
    private String minValue;

    /**
     * 最小值是否闭区间 (0-否，1-是 默认0)
     */
    private Integer minType;

    /**
     * 控件id
     */
    @NotNull(message = "筛选条件控件id不能为空")
    private Long controlId;

    /**
     * 控件code
     */
    private String controlCode;

    /**
     * 是否范围查询 (0-否，1-是)
     */
    @NotNull(message = "筛选条件是否范围查询参数不能为空")
    private Integer scope;

    /**
     * 关键字
     */
    private String keyword;

    /**
     * 是否模糊查询 (0-否，1-是)
     */
    @NotNull(message = "是否模糊查询参数不能为空")
    private Integer fuzzyQuery;

    /**
     * 下拉值
     */
    private List<Long> searchOptions;

    /**
     * 筛选类型 {@link OrderSearchTypeEnum} ""-全部；blank-未填写；unBlank-已填写
     */
    private String searchType;

    public OrderQueryReqDTO() {
        this.fuzzyQuery = SwitchEnum.YES.getId();
    }

    public OrderQueryReqDTO(Long controlId) {
        this.controlId = controlId;
        this.scope = SwitchEnum.NO.getId();
        this.fuzzyQuery = SwitchEnum.YES.getId();
    }

    public OrderQueryReqDTO(Long controlId, String keyword) {
        this.controlId = controlId;
        this.keyword = keyword;
        this.scope = SwitchEnum.NO.getId();
        this.fuzzyQuery = SwitchEnum.YES.getId();
    }
}
